package loja.view.main;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;

import loja.controller.editor.ListenerCategoriaFrameEditor;
import loja.controller.editor.ListenerFrameEditor;
import loja.controller.editor.ListenerGrupoFrameEditor;
import loja.controller.editor.ListenerItemEstoqueFrameEditor;
import loja.controller.editor.ListenerProdutoFrameEditor;

public class MainFrame extends JFrame implements ActionListener {

	private static final long serialVersionUID = 1L;

	private JMenuBar menuBar;
	private JDesktopPane desktopPane;
	private JMenu arquivoMenu, editarMenu, estoqueMenu;
	private JMenuItem sairMenuItem, gruposMenuItem, categoriasMenuItem,
			produtosMenuItem, itensEmEstoqueMenuItem;

	public MainFrame() {

		super("Loja Simples App");

		desktopPane = new JDesktopPane();
		menuBar = new JMenuBar();
		arquivoMenu = new JMenu();
		editarMenu = new JMenu();
		estoqueMenu = new JMenu();

		sairMenuItem = new JMenuItem();
		gruposMenuItem = new JMenuItem();
		categoriasMenuItem = new JMenuItem();
		produtosMenuItem = new JMenuItem();
		itensEmEstoqueMenuItem = new JMenuItem();

		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
		setIconImage(new ImageIcon(getClass().getResource(
				"/image/logo_loja.png")).getImage());

		arquivoMenu.setMnemonic('a');
		arquivoMenu.setText("Arquivo");

		editarMenu.setMnemonic('e');
		editarMenu.setText("Editar");

		estoqueMenu.setMnemonic('e');
		estoqueMenu.setText("Estoque");

		sairMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
				ActionEvent.ALT_MASK));
		sairMenuItem.addActionListener(this);
		sairMenuItem.setMnemonic('s');
		sairMenuItem.setText("Sair");

		gruposMenuItem.addActionListener(this);
		gruposMenuItem.setActionCommand("EditarEstoqueGrupos");
		gruposMenuItem.setMnemonic('g');
		gruposMenuItem.setText("Grupos");

		categoriasMenuItem.addActionListener(this);
		categoriasMenuItem.setActionCommand("EditarEstoqueCategorias");
		categoriasMenuItem.setMnemonic('c');
		categoriasMenuItem.setText("Categorias");

		produtosMenuItem.addActionListener(this);
		produtosMenuItem.setActionCommand("EditarEstoqueProdutos");
		produtosMenuItem.setMnemonic('p');
		produtosMenuItem.setText("Produtos");

		itensEmEstoqueMenuItem.addActionListener(this);
		itensEmEstoqueMenuItem.setActionCommand("EditarEstoqueItensEmEstoque");
		itensEmEstoqueMenuItem.setMnemonic('i');
		itensEmEstoqueMenuItem.setText("Itens em Estoque");

		arquivoMenu.add(sairMenuItem);
		editarMenu.add(estoqueMenu);

		estoqueMenu.add(gruposMenuItem);
		estoqueMenu.add(categoriasMenuItem);
		estoqueMenu.add(produtosMenuItem);
		estoqueMenu.add(itensEmEstoqueMenuItem);

		menuBar.add(arquivoMenu);
		menuBar.add(editarMenu);

		setJMenuBar(menuBar);

		add(desktopPane);

		setPreferredSize(new Dimension(800, 600));
		pack();

	}

	@Override
	public void actionPerformed(ActionEvent e) {

		String command = e.getActionCommand();

		switch (command) {
		case "Sair":
			System.exit(0);
			break;
		case "EditarEstoqueGrupos":
			addInternalFrame(new ListenerGrupoFrameEditor());
			break;

		case "EditarEstoqueCategorias":
			addInternalFrame(new ListenerCategoriaFrameEditor());
			break;

		case "EditarEstoqueProdutos":
			addInternalFrame(new ListenerProdutoFrameEditor());
			break;

		case "EditarEstoqueItensEmEstoque":
			addInternalFrame(new ListenerItemEstoqueFrameEditor());
			break;

		}

	}

	private void addInternalFrame(ListenerFrameEditor<?, ?> entityEditorListener) {
		JInternalFrame frame = entityEditorListener.getFrameEditor();
		desktopPane.add(frame);
		desktopPane.getDesktopManager().maximizeFrame(frame);
	}

}
